//------------------------------------------------------------------------
/**
\file		IFloatFeature.h
\brief		Definition of the IFloatFeature interface
\Date       2016-8-09
\Version    1.1.1608.9091
*/
//------------------------------------------------------------------------
#pragma once
#include "GXStringCPP.h"
#include "GXIAPIBase.h"
#include "GXSmartPtr.h"

class GXIAPICPP_API IFloatFeature
{
public:
	//---------------------------------------------------------
	/**
	\brief Destructor
	*/
	//---------------------------------------------------------
	virtual ~IFloatFeature(){};

	//----------------------------------------------------------------------------------
	/**
	\brief   Get minimum value allowed
	*/
	//----------------------------------------------------------------------------------
	virtual double GetMin() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   Get maximum value allowed
	*/
	//----------------------------------------------------------------------------------
	virtual double GetMax() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   True if the float has a constant increment
	*/
	//----------------------------------------------------------------------------------
	virtual bool HasInc() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   Get the constant increment if there is any
	*/
	//----------------------------------------------------------------------------------
	virtual double GetInc() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   Get the physical unit name
	*/
	//----------------------------------------------------------------------------------
	virtual GxIAPICPP::gxstring GetUnit() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   Get feature value
	*/
	//----------------------------------------------------------------------------------
	virtual double GetValue() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   Set feature value
	\return  void
	*/
	//----------------------------------------------------------------------------------
	virtual void SetValue(double dValue) = 0;
};

template class GXIAPICPP_API  GXSmartPtr<IFloatFeature>;
typedef GXSmartPtr<IFloatFeature>     CFloatFeaturePointer;